<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>9.初始化state</title>
</head>
<body>
    <!--准备好一个容器-->
    <div id="test"></div>
    <!---引入react核心库-->
    <script type="text/javascript" src="./js/react.development.js"></script>
    <!--引入react-dom用于支持react操作dom-->
    <script type="text/javascript" src="./js/react-dom.development.js"></script>
    <!--引入babel用于将jsx转为js-->
    <script type="text/javascript" src="./js/babel.min.js"></script>

    <script type="text/babel"> //此处一定要写
    //1.创建组件
        class Weather extends React.Component{

            //构造器调用几次？--1次
            constructor(props){
                super(props)
                //初始化状态
                this.state = {isHot:false,wind:'微风'}
                //解决changeWeather中this的指向问题
                this.changeWeather = this.changeWeather.bind(this)

            }

            //changeWeather()调用几次？---点击此调几次
            changeWeather(){
                    //changeWeather放在哪里？--weather的原型对象上，供实例使用
                    //由于changeweather时作为onclick的回调，所以不是通过实例调用的，时直接调用
                    //类中的方法默认开启了局部的严格模式，所以changeweather中的this为underfined
                    const isHot = this.state.isHot
                    //严重注意：状态（state）是不可直接更改的，下面这行就是直接更改！！
                    //this.state.isHot = !isHot//这种写法对state中的属性是不生效的

                    //严重注意，state只能通过setState去更改
                    this.setState({isHot:!isHot})
                    console.log(this.state.isHot)
                }
            
            //render()调用几次？---1+n次   n是状态更新的次数
            render(){
                const {isHot} = this.state
                console.log(this)
                return <h1 onClick={this.changeWeather}>今天天气很{this.state.isHot? '炎热' : '凉爽'},{wind}</h1>

            }
        }
        
        
    //2.渲染
        ReactDOM.render(<Weather/>,document.getElementById('test'));
    </script>
</body>
</html>